OmniHTTPd Server Documentation

Last Updated: June 2, 1996


This documentation is for release 1.0a7 (Alpha 7)
Please check the OmniHTTPd Home Page for updates and new releases.

What is OmniHTTPd?

OmniHTTPd is a powerful all-purpose industry compliant WWW server for Windows 95. It is designed to use the Winsock TCP/IP interface to server web documents over any type of Internet connection. Best of all, OmniHTTPd is free. Why spend thousands of dollars on a Unix or NT system and web software when you can use OmniHTTPd with Windows 95?

The server complies with the industry standard HTTP/1.0 specification meaning maximum compatibility with all currently available browsers. Future versions of the server will also be compliant with the new HTTP/1.1 specifications, making it the most advanced server available for the Windows 95 platform. Some of the features of this new specification are already enabled in the current release.

For maximum performance, OmniHTTPd is both 32-bit and multi-threaded. OmniHTTPd is also designed with the computer hobbyist in mind. While powerful enough to serve over 20GB/day, the daemon is compact and easy to maintain, making it the ideal choice for the novice web master.

OmniHTTPd is currently under development; as a result, the alpha version being distributed is unfinished. OmniHTTPd will be going into beta very soon.


Contents


Copyright and Disclaimer

This software is Copyright © 1995, 1996 Omnicron Software Solutions. All rights reserved.

By using this test version of OmniHTTPd you are consenting to be bound by agreement to the following:

GRANT OF LICENSE

Omnicron Software Solutions (the "Company") has granted you, the user, a limited license to test OmniHTTPd (the "Software") This does NOT give you the license to modify, translate, reverse engineer, decompile, disassemble (except to the extent applicable laws specifically prohibit such restriction), or create derivative works based on the Software.

DISCLAIMER

Since the Software is provided free of charge, Omnicron Software Solutions (the "Company") shall not be held responsible for any damages arising from the use of the Software. The Software is provided on an AS IS basis, without warranty of any kind, including without limitation the warranties of merchantability, fitness for a particular purpose and non-infringement. The entire risk as to the quality and performance of the Software is borne by you. Should the Software prove defective, you and not the Company, assume the entire cost of any service and repair.

Security mechanisms implemented in the Software have its limitations and you, the user, must decide whether the Software sufficiently meets your requirements.


Upgrading to Alpha 7 from Alpha 6

  1. Unzip the new executables and copy them over the old versions.
  2. Run the new ADMIN.EXE and to edit the properties for each configuration. For each one, bring up the Advanced tab and check that the settings for the four check boxes are correct.
  3. You have successfully upgraded.

Upgrading from an older version

  1. Unzip the new executables and copy them over the old versions.
  2. Run the new ADMIN.EXE and press the Reset button to restructure and upgrade your setup information on each configuration.
  3. You will have to re-enter all your setup information.
  4. You have successfully upgraded.


Release Notes


Features

Installation

If the release you have is not self-extracting/installing, copy the distribution .ZIP file into a directory and unzip the files using the -d option so that PKUNZIP creates the proper directories for you. If you are using WinZip, make sure that you check the "Use Directory Names" option.

Installation is easiest if you use the directory C:\HTTPD as your root as all the default settings point to this directory.

Note that 'Primary' is the default configuration. To create and use other configurations, simply run the server with the configuration name as a command line parameter. Note that multiple copies of the server can run as long as each copy uses different network ports and log files.


Configuring the Server

To configure the server, run ADMIN.EXE. The default configuration is Primary. You can create additional configurations by pressing New.

Network

Port Number

Timeouts

Keep Alive


Server

Site Address

Server Root

Default Index

Email Address

Server Priority

Enable DNS Reverse

Send Version Information


Logging

Access Log

Error Log

Trace Log

Referrer Log


Alias

Redirections

Standard CGI

Windows CGI

MIME


Indexing

Auto-indexing

Table indexing


Advanced

Just what the name implies. Don't touch these unless you know what you are doing.


Running the Server

To run the server, run OHTTPD.EXE. Running the program with no parameters will cause the "Primary" configuration to be loaded.

To use a different configuration, supply a name as a command line parameter. For example, the command line:

OHTTPD Port96

will force the server to use a previously set configuration called Port96.

The server will start in the background and an icon will be placed into the system tray. You can click on the icon to call up a status window. You can also right click on the icon to bring up a menu. Closing the status window does not shut down the server; it must be done from the menu.


CGI Scripts

OmniHTTPd has the ability to run both Standard CGI and Windows CGI scripts. Scripts must be placed in their respective directories so that the server can determine how to correctly execute the script. Use the administration tool to define these directories. Do not alias to these directories as an alias definition will override a CGI directory definition.

In addition, scripts must be placed in the base of the CGI directory. For example, if you have /cgi-bin defined as c:\httpd\cgi-bin, scripts must be placed in c:\httpd\cgi-bin. You cannot put them in a child directory like c:\httpd\cgi-bin\child\dir. This, however, does not prevent scripts from storing their own information in child directories.

This restriction allows OmniHTTPd to efficiently parse path information without the access overhead of attempting each possible path.

If you get errors when launching standard CGI scripts or not all environment variable are present, you are running out of DOS environment space. To fix this, add the following lines to your SYSTEM.INI:

[NonWindowsApp] 
CommandEnvSize=8192


Using Perl Scripts

OmniHTTPd supports the use of Perl for developing Standard CGI scripts. You must have a Perl interpreter, such as Perl for Win32, installed to use Perl. In keeping with the standard convention, Perl scripts must end in the extension .pl and must be placed in a standard CGI directory. Output from Perl scripts are treated the same as regular CGI scripts.


Server Side Includes

Server side includes (SSI) allows the insertion of dynamic data into .html documents. OmniHTTPd does all of its SSI processing in-memory and sends the correct Content-Length header value. There is no support for the #exec command in this release. Otherwise, we believe the SSI implementation in OmniHTTPd to be complete. The next generation SSI+ specifications are being reviewed at this time and it is doubtful whether a complete implementation of SSI+ will be included in future releases of OmniHTTPd.

Known problem: When specifying files for includes or last modified dates, you must specify the entire local URL. For example, you must use "/dir/test.html" and not "test.html" if the current directory is /dir/.


Troubleshooting

My scripts always return blank documents or weird content types. Am I doing something wrong?

Make sure that your scripts are being placed in CGI directories and not alias directories. If you are using Perl, make sure your Perl scripts are in a standard CGI directory and have a .pl extension. Also make sure that your scripts return a Content-Type. OmniHTTPd will not automatically append a text/plain type to content-typeless entities.

Server side includes aren't working!

Make sure you rename the extension of the files that you want parsed to .shtml. Also make sure you have updated the MIME types in the administration program.

What are all those OMN?????.TMP files doing in my temporary directory?

These files are usually a result of unsuccessful CGI launches. It could be a problem with your CGI script. You can safely delete these files if the server is not running.

My setup is all messed up, how can delete it and go back to the defaults?

Using the administration program, select the offending configuration and press the Reset button.

Why does the server say it can't bind the socket or open the log files?

Check to make sure that another copy of the server isn't running. Make sure your TCP settings are correct. Make sure that you are using a Winsock compliant TCP socket interface.

How come connections remain open even though the client has finished transferring information?

The connection is probably in Keep-Alive mode and will stay open for the Keep-Alive amount of time before closing. By reusing the connection for subsequent requests, the overhead of tearing down and building separate connections is eliminated. Microsoft's Internet Explorer supports Keep-Alive connections. Netscape's support for Keep-Alive connections is mildy retarded and will hang frequently on transparent .GIF files for reasons unknown.

My local redirections don't work. I can't use http://site.com/foo, I always need to type http://site.com/foo/ How do I fix this?

Make sure that the site address is set properly in the configuration. OmniHTTPd needs this to be set correctly so that it can tell the browser the correct place to look for the redirection.


Copyright © 1996 Omnicron Software Solutions